package com.surge;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloMain {

	private static ApplicationContext ctx;

	public static void main(String[] args) {
		/*
		 * 1、不使用 spring
		 */
		HelloWorld helloWorld = new HelloWorld();
		helloWorld.setName("Tom");
		helloWorld.hello();
		
		/*
		 * 2、 使用spring 实现
		 * 
		 *  利用属性注入
		 */
		
		//1. 创建 Spring 的 IOC 容器
		ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

		// 2. 从 IOC 容器中获取 bean 的实例
		HelloWorld helloWorld2 = (HelloWorld) ctx.getBean("helloWorld");

		// 根据类型来获取 bean 的实例: 要求在 IOC 容器中只有一个与之类型匹配的 bean, 若有多个则会抛出异常.
		// 一般情况下, 该方法可用, 因为一般情况下, 在一个 IOC 容器中一个类型对应的 bean 也只有一个.
		// HelloWorld helloWorld1 = ctx.getBean(HelloWorld.class);

		// 3. 使用 bean
		helloWorld2.hello();

	}

}
